package com.dingqb.ktdemo.oop.bs

class D {
	fun bar() {
		println("D bar")
	}
}

class C {
	fun bar() {
		println("C bar")
	}  // 与 D 类 的 bar 同名

	fun D.foo() {
		bar()         // 调用 D.bar()，扩展接收者优先
		this@C.bar()  // 调用 C.bar()
	}

	fun caller(d: D) {
		d.foo()   // 调用扩展函数
	}
}

fun main(args: Array<String>) {
	val c: C = C()
	val d: D = D()
	c.caller(d)

}